import { createPinia } from 'pinia'
import { DEFAULT_PRIMARY } from '@/config/config'
import piniaPluginPersist from 'pinia-plugin-persist'
import { GlobalState, ThemeConfigProps } from './types'

// defineStore 调用后返回一个函数，调用该函数获得 Store 实体
export const GlobalStore = defineStore({
  // id: 必须的，在所有 Store 中唯一
  id: 'GlobalState',
  // state: 返回对象的函数
  state: (): GlobalState => ({
    // token
    token: '',
    // userInfo
    userInfo: '',
    // language
		language: "",
    // themeConfig
    themeConfig: {
      // 当前页面是否全屏
      maximize: false,
      // 布局切换 ==>  纵向：vertical
      layout: 'vertical',
      // 折叠菜单
      isCollapse: false,
      // 页脚
      footer: true,
      // 面包屑
      breadcrumb: true,
      // 面包屑导航图标
      breadcrumbIcon: false,
      // 标签页
			tabs: true,
			// 标签页图标
			tabsIcon: true,
      // 暗黑主题
      isDark: false,
      // 默认主题
      primary: DEFAULT_PRIMARY,
      // 灰色模式
			isGrey: false,
			// 色弱模式
			isWeak: false,
      // 是否开启水印
      isWartermark: true,
      // 水印文字
      wartermarkText: '用户ID',
      // 默认全局组件大小，可选值"<large|'default'|small>"，默认 'large'
			globalComponentSize: 'large',
    },
  }),
  getters: {},
  actions: {
    // setToken
    setToken(token: string) {
      this.token = token
    },

    // setUserInfo
    setUserInfo(userInfo: any) {
      this.userInfo = userInfo
    },
    // updateLanguage
		updateLanguage(language: string) {
			this.language = language;
		},
    // setThemeConfig
    setThemeConfig(themeConfig: ThemeConfigProps) {
      this.themeConfig = themeConfig
    },
  },
  persist: {
    enabled: true,
  },
})

const store = createPinia()
store.use(piniaPluginPersist)

export default store
